//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
////
//// 原版
//char* my_strcpy(char* dest, const char* src) 
//{
//	assert(dest != NULL);
//	assert(src != NULL);
//	while (*src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src; // 拷贝'\0'结束符
//	return dest;
//}
//
//// 1.优化断言
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	while (*src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src; // 拷贝'\0'结束符
//	return dest;
//}
//
//// 2.优化赋值
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	while (*src != '\0')
//	{
//		*dest++ = *src++;
//	}
//	*dest = *src; // 拷贝'\0'结束符
//	return dest;
//}
//
//// 3.优化循环和拷贝'\0'结束符
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	while (*dest++ = *src++)
//	{
//		;
//	}
//	return dest;
//}        
//
//// 4.优化返回值
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*dest++ = *src++)
//	{
//		;
//	}
//	return ret;
//}

//int main()
//{
//	char str1[] = "hello world";
//	char str2[100];
//	my_strcpy(str2, str1);
//	printf("%s\n", str2);
//	return 0;
//}
